package busquedas;

import java.util.ArrayList;
import java.util.List;

import asientos.Vuelo;

public abstract class DecoradorFiltroOpcional implements FiltroOpcional {	
	private FiltroOpcional FiltroOpcional;
	
	public void setFiltroOpcional(FiltroOpcional FiltroOpcional) {
		this.FiltroOpcional = FiltroOpcional;
	}

	public FiltroOpcional getFiltroOpcional() {
		return FiltroOpcional;
	}

	@Override
	public void aplicarFiltroOpcional(List<Vuelo> asientos) {
		List<Vuelo> asientosFiltrados = new ArrayList<Vuelo>(); 
		
		for (int i = 0; i < asientos.size(); i++) {
			if (aplicaElFiltro(asientos.get(i))) {
				asientosFiltrados.add(asientos.get(i));				
			}			
		}
		asientos.clear();
		asientos.addAll(asientosFiltrados);
		this.getFiltroOpcional().aplicarFiltroOpcional(asientos);
	}

	protected abstract boolean aplicaElFiltro(Vuelo vuelo);
	

	
	
}
